package tacos.data;

import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import tacos.Ingredient;

import java.util.List;
import java.util.Optional;

// IngredientRepository接口
/*
* Spring Data会在运行时自动生成存储库接口的实现。但是，只有当接口扩展自Spring Data提供的存储库接口时，它才会帮我们实现这一点。
* 至少，我们的存储库接口需要扩展Repository，这样Spring Data才会自动为我们创建实现。
* Repository接口是参数化的，其中第一个参数是该存储库要持久化的对象类型，在本例中也就是Ingredient。
* 第二个参数是要持久化对象的ID字段的类型，对于Ingredient来说，也就是String。
* 但是Spring Data也为一些常见的操作，提供了CrudRepository基础接口，其中就包含了我们在IngredientRepository中所定义的3个方法。
* 所以，与其扩展Repository，还不如扩展CrudRepository，如程序清单3.13所示。
public interface IngredientRepository extends Repository<Ingredient, String> {
    List<Ingredient> findAll();
    Optional<Ingredient> findById(String id);
    Ingredient save(Ingredient ingredient);
}
* */
public interface IngredientRepository extends CrudRepository<Ingredient, String> {
}